#include "mensajemidi.h"
#include <iostream>

/*
MensajeMidi::MensajeMidi(QObject *parent) : QObject(parent)
{
    canal = 0;
    comando = 0;
    nota = 0;
    velocidad = 0;
}
*/

MensajeMidi::MensajeMidi()
{
}

void MensajeMidi::asignarDatos(std::vector<unsigned char> *datos, double deltatime)
{
    unsigned char byte0 = datos->size() > 0 ? datos->at(0) : 0;
    unsigned char byte1 = datos->size() > 1 ? datos->at(1) : 0;
    unsigned char byte2 = datos->size() > 2 ? datos->at(2) : 0;

    comando = (byte0 & 0x70) >> 4;
    canal = (byte0 & 0x0F) + 1;
    nota = byte1;
    velocidad = byte2;
}


QString MensajeMidi::toString()
{
    return QString("%1 ch%2 %3 v%4")
		.arg(getNombreComando())
		.arg(canal)
		.arg(Formato::formatearNombreNota(nota))
		.arg(getVelocidad());
}

QString MensajeMidi::getNombreComando()
{
    static char* nombres[] = {
            "NOTE_OFF",
            "NOTE_ON",
            "POLYPHONIC_KEY_PRESURE",
            "CONTROL_CHANGE",
            "PROGRAM_CHANGE",
            "CHANNEL_PRESURE",
            "PITCH_WEEL_CHANGE",
            "SYSTEM_MESSAGE" };
    if (comando >= 0 && comando <= 7) {
        return QString(nombres[comando]);
    } else {
        return QString();
    }
}



